import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;


public class BossDanMaKu1 {
	
	public Image image;
	public float x, y;
	Rectangle rect;
	
	public boolean active;//활성화 여부 -> 이 값이 false이면 관리 목록에서 제거
	
	public int count;	//전체 이미지에 포함된 단위 이미지 갯수
	public int width;	//단위 이미지의 넓이
	public int height;	//단위 이미지의 높이
	
	////////////////////////////////////////////////////
	
	float mx; float my;	//메인 케릭터의 위치 
	float ex; float ey;	//적기의 좌표 
	float speed	;		//탄환의 속도
	float vx, vy;//탄환의 속도 벡터
	/////////////////////////////////////////////////////
	
	private int currentIndex = -1;//현재 표시할 단위 이미지 위치
	
	private long prevChangedTime = 0;
	private long changeSpeed = 120;//탄 색깔 변경시간
	
	public BossDanMaKu1(Image image, int x, int y, int count) {
		this.image = image;
		this.x = x;
		this.y = y;
		
		this.count = count;//이미지 나눌 갯
		width = image.getWidth(null)/count;//가로로 긴 이미지를 count로 나눠서 하나의 이미지로 보이게 
		height = image.getHeight(null);
		
		rect = new Rectangle(image.getWidth(null), image.getHeight(null));//충돌 체크용 Rectangle
	}
	
	public void initAimingBullet(
			float mx, float my,	//메인 케릭터의 위치 
			float ex, float ey,	//적기의 좌표 
			float speed			//탄환의 속도
			){
		this.mx = mx; this.my = my;
		this.ex = ex; this.ey = ey;
		//탄환의 좌표
		
		x = mx + 210; y = my + 131;//미사일 위치
		float d = (float) Math.sqrt(((mx + 210)-ex)*((mx + 210)-ex)+((my + 131)-ey)*((my + 131)-ey));
		
		if(d == 0){
			vx=0;
			vy=speed;	
		}else{
			vx = ((mx + 210)-ex)/d*speed;
			vy = ((my + 131)-ey)/d*speed;
		}
	}



	
	public void update() {
		//x = x - 20; //좌측으로 이동
		x -= vx;
		y -= vy;
		
		if (x < 0) {
			active = false;
		}if (y < 0) {
			active = false;
		}if (x > 800) {
			active = false;
		}if (y >800) {
			active = false;
		}
		long currentTime = System.currentTimeMillis();
		if(currentTime-prevChangedTime>changeSpeed){//이미지 변환 시간 조
			currentIndex++;
			if(currentIndex == 2){//이미지 반복위해 이미지 끝까지 가면 다시 
				currentIndex = 0; // 0으로 돌림
			}
//			if(currentIndex==count){
//				active = false;
//			}
			prevChangedTime = currentTime;
		}
	}
	
	public void render(Graphics g) {
		if(active){
			g.drawImage(image,
				(int)x,							//표시할 화면의 좌상단 x좌표
				(int)y,							//표시할 화면의 좌상단 y좌표
				(int)x+width,					//표시할 화면의 우하단 x좌표	
				(int)y+height,					//표시할 화면의 우하단 y좌표
				width *currentIndex,		//원본 이미지에서 잘라낼 영역의 좌상단 x
				0,							//원본 이미지에서 잘라낼 영역의 좌상단 y
				width*(currentIndex + 1),	//원본 이미지에서 잘라낼 영역의 우하단 x
				height,						//원본 이미지에서 잘라낼 영역의 우하단 y
				null);						//원본 이미지에서 잘라내서 화면에 표시한다
		}
	}
	
	public Rectangle getArea() {
		rect.x = (int)x;
		rect.y = (int)y;
		return rect;
	}

}









